package com.supreme.omsserver.entity.mysql;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * @TableName biz_sale_order
 */
@TableName(value = "biz_sale_order")
@Data
@Accessors(chain = true)
public class SaleOrder implements Serializable {

    public static String listKey() {
        return SaleOrder.class.getSimpleName() + "_LIST";
    }

    public static String itemKey(Object field) {
        return SaleOrder.class.getSimpleName() + "_" + field;
    }

    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Long saleOrderId;

    /**
     * 租户ID
     */
    @JsonIgnore
    private String tenantId;

    /**
     * 订单来源
     */
    private Integer tppType;

    /**
     * 第三方销售订单ID
     */
    private String tppOrderCode;

    /**
     * 第三方门店ID --thridparty platform
     */
    private String tppShopId;

    /**
     * 第三方门店名称 --thridparty platform
     */
    private String tppShopName;

    /**
     * 销售订单状态
     */
    private Integer saleOrderStatus;

    /**
     * 支付类型
     */
    private Integer paymentType;

    /**
     * 支付状态
     */
    private Integer paymentStatus;

    /**
     * 配送类型
     */
    private Integer deliveryType;

    /**
     * 配送状态
     */
    private Integer deliveryStatus;

    /**
     * 销售订单实际创建时间
     */
    private Date orderCreateTime;

    /**
     * 联系电话
     */
    private String customerPhone;

    /**
     * 用户昵称
     */
    private String customerName;

    /**
     * 所属门店ID
     */
    @JsonIgnore
    private Long storeId;

    /**
     * 所属门店
     */
    @JsonIgnore
    private String storeName;

    /**
     * 组织结构ID
     */
    @JsonIgnore
    private Long deptId;

    /**
     * 组织结构名称
     */
    @JsonIgnore
    private String deptName;

    /**
     * 所属区域
     */
    @JsonIgnore
    private String groupDeptName;

    /**
     * 分公司名称
     */
    @JsonIgnore
    private String companyName;

    /**
     * 销售订单内部确认
     */
    private Integer confirmStatus;

    /**
     * 订单金额
     */
    private Double moneyAmount;

    /**
     * 退款金额
     */
    @JsonIgnore
    private Double refundAmount;

    /**
     * 0订单未完成，1订单已完成
     */
    private Integer completed;

    /**
     * 催单id（美团）
     */
    @JsonIgnore
    private Long remindId;

    /**
     * 催单状态（0：未催单，1：已催单，2：已回复催单）
     */
    @JsonIgnore
    private Integer remindStatus;

    /**
     * 催单时间
     */
    @JsonIgnore
    private Date remindTime;

    /**
     * 售后单id
     */
    @JsonIgnore
    private Long refundId;

    /**
     * 售后类型: 1-仅退款；2-退货退款；3-换货；4-补寄；5-维修
     */
    @JsonIgnore
    private Integer billType;

    /**
     * 售后状态
     */
    @JsonIgnore
    private Integer afterSalesStatus;

    /**
     *
     */
    @JsonIgnore
    private Integer syncErp;

    /**
     * B2C发货状态: 1已生成电子面单 2已发货 -9生成面单失败
     */
    private Integer waybillStatus;

    /**
     *
     */
    private String orderRemark;

    /**
     *
     */
    @JsonIgnore
    private String delFlag;

    /**
     *
     */
    @JsonIgnore
    private String createBy;

    /**
     *
     */
    private Date createTime;

    /**
     *
     */
    @JsonIgnore
    private String updateBy;

    /**
     *
     */
    private Date updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}